თავი 3. მართვის ელემენტის დაპროექტება ფორმაზე. ინტერაქტიული Web-გვერდის შექმნა
3.1. მართვის ელემენტი DataGrid (გაგრძელება)

 
3.1.3. გაანგარიშებების შესრულება DataGrid-ში 
მართვის ელემენტის  დაპროექტებისას დავამატოთ ახალი სვეტი. პროგრამის შესრულების დროს მოვახდინოთ გაანგარიშება და შედეგი ჩავწეროთ ამ სვეტში. 
დავუშვათ, მონაცემების ბაზიდან ამოარჩიეთ საქონლის დასახელება, შეძენის ფასი. მართვის ელემენტის დაპროექტებისას დაამატეთ ახალი სვეტი და დაარქვით მას „რეალიზაციის ფასი”. დავუშვათ, საჭიროა შეძენის ფასი გაზარდოთ 15%-ით.
იმისათვის, რომ ველების გენერაცია პროგრამული კოდით განხორციელდეს (და არა ავტომატურად ცხრილის ჩატვირთვისას), საჭიროა მართვის ელემენტის DataGrid თვისება AutoGenerateColumns=False 
 
 html კოდი შემდეგია
 <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
     <title>Untitled Page</title>
 </head>
<body>
    <form id="form1" runat="server">
    <div>
         <br />      
 <asp:DataGrid ID="DataGrid1" runat="server" CellPadding="4" ForeColor="#333333"
            GridLines="None" Style="font-family: AcadNusx" AutoGenerateColumns="False">
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <EditItemStyle BackColor="#2461BF" />
            <SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
        <AlternatingItemStyle BackColor="White" />
            <ItemStyle BackColor="#EFF3FB" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <Columns>
                <asp:BoundColumn DataField="das" HeaderText="dasaxeleba"></asp:BoundColumn>
                <asp:BoundColumn DataField="sfasi" HeaderText="SeZenis fasi"></asp:BoundColumn>
                <asp:BoundColumn DataField="rfasi" HeaderText="realizaciis fasi"></asp:BoundColumn>
            </Columns>
        </asp:DataGrid>         
        &nbsp;<br /> <br /></div></form>
</body>
</html>

პროგრამული კოდი შემდეგია:
 
 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not IsPostBack Then
            Dim ds As DataSet = New DataSet()
            Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" _
            & Server.MapPath("ekonfakulteti.mdb")
            Dim da As OleDbDataAdapter = New _
            OleDbDataAdapter("SELECT das, sfasi FROM tbsaqoneli", conn)
            da.Fill(ds)
            Dim dc As DataColumn
            dc = New DataColumn("rfasi", Type.GetType("System.Single"))
            dc.Expression = "sfasi * 1.15"
            ds.Tables(0).Columns.Add(dc)
DataGrid1.DataSource = ds.Tables(0).DefaultView
            DataGrid1.DataBind()
        End If
     End Sub

დახარისხება DataGrid-ში
ჩვენი ამოცანაა მართვის ელემენტში DataGrid არსებული ცხრილის სვეტის დასახელებაზე დაწკაპუნებით განხორციელდეს მონაცემების დახარისხება. ამ ამოცანის გადასაწყვეტად:
  • მართვის ელემენტის დაპროექტებისას მიუთითეთ სვეტები, რომლებითაც შესაძლებელია დახარისხება;
  • შექმენით მონაცემების ბაზასთან დაკავშირების პროცედურა, და დააკავშირეთ იგი გვერდის ჩატვირთვის მოვლენასთან. ამავე დროს შემოწმეთ ამ გვერდის არსებობა PostBack-ზე და მისი არსებობის შემთხვევაში გამოიძახეთ ჩვენს მიერ შექმნილი პროცედურა BindData;
  • შექმენით პროცედურა,  რომელიც დაკავშირებუ-ლია DataGrid-ში მოვლენასთან OnSortCommand არგუმენტთან.  

3.1.4. წინასწარ მითითებულ ველებში დახარისხება ზრდადობით ან კლებადობით
დავიტანოთ DataGrid მართვის ელემენტი გვერდზე. სისტემის მიერ ავტომატურად გენერირებული html კოდი შემდეგია:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
 </head>
<body>
    <form id="form1" runat="server">
    <div>
               <br />
        &nbsp;<asp:DataGrid ID="DataGrid1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
            Font-Names="AcadNusx">
            <Columns>
                <asp:TemplateColumn HeaderText="gvari" SortExpression="gvari">
                    <ItemTemplate>
                        <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.gvari") %>'></asp:Label>
                    </ItemTemplate>                     
                </asp:TemplateColumn>
                <asp:TemplateColumn HeaderText="saxeli" SortExpression="saxeli desc"> 
‘ velisTvis “saxeli” miTiTebulia, rom daxarisxeba ganxorcieldes klebadobiT
                    <ItemTemplate>
                        <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.saxeli") %>'></asp:Label>
                    </ItemTemplate>
                     </asp:TemplateColumn>
            </Columns>
        </asp:DataGrid>
         <br /></div></form>
</body>
</html>
დახარისხების განსახორციელებლად საჭიროა:
  1. მონაცემების ბაზასთან დაკავშირება;
  2. მართვის ელემენტის შევსება მონაცემებით;
  3. ცხრილში სვეტების დასახელებაზე დაწკაპუნე-ბისას დახარისხება.

3.1.5.        მონაცემების წყაროსთან დაკავშირება
Private Sub binddata()
Dim ds As DataSet = New DataSet()’obieqtTa klasis DataSet-ის ეგზემპლარის შექმნა
Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;data source=  Server.MapPath("ekonfakulteti.mdb")’ მონაცემების ბაზასთან   დაკავშირება
        Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT gvari, saxeli FROM tbstudentiz", conn) ’ OleDbDataAdapter-ის დაკავშირება მონაცემების ბაზასთან და Fill(ds) OleDbDataAdapter-ის მონაცემებით შევსება ობიექტიდან DataSet
ds.Tables(0).DefaultView.Sort = ViewState("sort")
DataGrid1.DataSource = ds.Tables(0).DefaultView
   DataGrid1.DataBind()’ ცხრილის შევსება მონაცემებით
    End Sub

3.1.6.        გვერდის ჩატვირთვისთანავე მართვის ელემენტის შევსება მონაცემებით
  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not IsPostBack Then
            binddata()
        End If
    End Sub

3.1.7.        დახარისხება
Protected Sub DataGrid1_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles DataGrid1.SortCommand
     Me.ViewState("sort") = e.SortExpression
       binddata()
    End Sub